/*     */ package com.zimbra.qa.unittest.prov;
/*     */ 
/*     */ import com.zimbra.common.util.ByteUtil;
/*     */ import com.zimbra.common.util.FileUtil;
/*     */ import java.io.File;
/*     */ import java.io.IOException;
/*     */ import java.io.PrintStream;
/*     */ import java.text.SimpleDateFormat;
/*     */ import java.util.ArrayList;
/*     */ import java.util.Date;
/*     */ import java.util.List;
/*     */ import java.util.Random;
/*     */ import org.junit.Assert;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class BinaryLdapData
/*     */ {
/*     */   public static final String DATA_PATH = "/opt/zimbra/unittest/ldap/binaryContent/";
/*     */   
/*     */   public static class Content
/*     */   {
/*     */     private String string;
/*     */     private byte[] binary;
/*  40 */     private static int SEQUENCE = 0;
/*     */     
/*     */     public Content(byte[] content) {
/*  43 */       this.binary = content;
/*  44 */       this.string = ByteUtil.encodeLDAPBase64(content);
/*     */     }
/*     */     
/*     */     public String getString() {
/*  48 */       return this.string;
/*     */     }
/*     */     
/*     */     public byte[] getBinary() {
/*  52 */       return this.binary;
/*     */     }
/*     */     
/*     */     public static Content getContentByFileName(String contentFileName) throws IOException {
/*  56 */       File inFile = new File(contentFileName);
/*  57 */       return new Content(ByteUtil.getContent(inFile));
/*     */     }
/*     */     
/*     */     public static Content generateContent(int numBytes) {
/*  61 */       byte[] content = new byte[numBytes];
/*  62 */       Random random = new Random();
/*  63 */       random.nextBytes(content);
/*  64 */       return new Content(content);
/*     */     }
/*     */     
/*     */     private static synchronized int nextSequence() {
/*  68 */       return ++SEQUENCE;
/*     */     }
/*     */     
/*     */     public static Content generateCert() throws Exception {
/*  72 */       StringBuilder sb = new StringBuilder("/opt/zimbra/unittest/ldap/binaryContent/");
/*  73 */       sb.append(File.separator).append("temp");
/*     */       
/*  75 */       File dir = new File(sb.toString());
/*  76 */       FileUtil.deleteDir(dir);
/*     */       
/*     */ 
/*  79 */       FileUtil.ensureDirExists(dir);
/*     */       
/*  81 */       String keystoreFileName = dir.getAbsolutePath() + File.separator + "keystore.unittest";
/*  82 */       String aliasName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
/*  83 */       String certFileName = dir.getAbsolutePath() + File.separator + aliasName + ".crt";
/*     */       
/*  85 */       File keyStoreFile = new File(keystoreFileName);
/*  86 */       if (keyStoreFile.exists()) {
/*  87 */         keyStoreFile.delete();
/*     */       }
/*     */       
/*  90 */       String cn = aliasName + "-" + nextSequence();
/*     */       
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*  98 */       List<String> GEN_CERT_CMD = new ArrayList();
/*  99 */       GEN_CERT_CMD.add("keytool");
/* 100 */       GEN_CERT_CMD.add("-genkey");
/* 101 */       GEN_CERT_CMD.add("-keystore");
/* 102 */       GEN_CERT_CMD.add(keystoreFileName);
/* 103 */       GEN_CERT_CMD.add("-storepass");
/* 104 */       GEN_CERT_CMD.add("test123");
/* 105 */       GEN_CERT_CMD.add("-alias");
/* 106 */       GEN_CERT_CMD.add("aliasName");
/* 107 */       GEN_CERT_CMD.add("-keypass");
/* 108 */       GEN_CERT_CMD.add("test123");
/* 109 */       GEN_CERT_CMD.add("-dname");
/* 110 */       GEN_CERT_CMD.add("CN= " + cn + ", OU=zimbra, O=VMWare, L=Palo Alto, S=California, C=US");
/*     */       
/* 112 */       StringBuilder GEN_CERT_CMD_STR = new StringBuilder();
/* 113 */       for (String str : GEN_CERT_CMD) {
/* 114 */         GEN_CERT_CMD_STR.append(str).append(" ");
/*     */       }
/*     */       
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/* 125 */       List<String> EXPORT_CERT_CMD = new ArrayList();
/* 126 */       EXPORT_CERT_CMD.add("keytool");
/* 127 */       EXPORT_CERT_CMD.add("-export");
/* 128 */       EXPORT_CERT_CMD.add("-keystore");
/* 129 */       EXPORT_CERT_CMD.add(keystoreFileName);
/* 130 */       EXPORT_CERT_CMD.add("-storepass");
/* 131 */       EXPORT_CERT_CMD.add("test123");
/* 132 */       EXPORT_CERT_CMD.add("-alias");
/* 133 */       EXPORT_CERT_CMD.add("aliasName");
/* 134 */       EXPORT_CERT_CMD.add("-keypass");
/* 135 */       EXPORT_CERT_CMD.add("test123");
/* 136 */       EXPORT_CERT_CMD.add("-file");
/* 137 */       EXPORT_CERT_CMD.add(certFileName);
/*     */       
/* 139 */       StringBuilder EXPORT_CERT_CMD_STR = new StringBuilder();
/* 140 */       for (String str : EXPORT_CERT_CMD) {
/* 141 */         EXPORT_CERT_CMD_STR.append(str).append(" ");
/*     */       }
/*     */       
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/* 149 */       ProcessBuilder pb = new ProcessBuilder(GEN_CERT_CMD);
/* 150 */       pb.directory(dir);
/* 151 */       Process process = pb.start();
/* 152 */       int exitValue = process.waitFor();
/* 153 */       if (exitValue != 0) {
/* 154 */         String error = new String(ByteUtil.getContent(process.getErrorStream(), -1));
/* 155 */         System.out.println(error);
/*     */       }
/* 157 */       Assert.assertEquals(0L, exitValue);
/*     */       
/*     */ 
/* 160 */       pb = new ProcessBuilder(EXPORT_CERT_CMD);
/* 161 */       pb.directory(dir);
/* 162 */       process = pb.start();
/* 163 */       exitValue = process.waitFor();
/* 164 */       if (exitValue != 0) {
/* 165 */         String error = new String(ByteUtil.getContent(process.getErrorStream(), -1));
/* 166 */         System.out.println(error);
/*     */       }
/* 168 */       Assert.assertEquals(0L, exitValue);
/*     */       
/* 170 */       File certFile = new File(certFileName);
/* 171 */       Assert.assertTrue(certFile.exists());
/*     */       
/* 173 */       Content content = getContentByFileName(certFileName);
/*     */       
/*     */ 
/* 176 */       FileUtil.deleteDir(dir);
/*     */       
/*     */ 
/* 179 */       return content;
/*     */     }
/*     */     
/*     */     public boolean equals(String str) {
/* 183 */       return this.string.equals(str);
/*     */     }
/*     */     
/*     */     public boolean equals(byte[] bin) {
/* 187 */       if (bin == null) {
/* 188 */         return false;
/*     */       }
/*     */       
/* 191 */       if (this.binary.length != bin.length) {
/* 192 */         return false;
/*     */       }
/*     */       
/* 195 */       for (int i = 0; i < this.binary.length; i++) {
/* 196 */         if (this.binary[i] != bin[i]) {
/* 197 */           return false;
/*     */         }
/*     */       }
/*     */       
/* 201 */       return true;
/*     */     }
/*     */   }
/*     */ }


/* Location:              /home/mint/zimbrastore.jar!/com/zimbra/qa/unittest/prov/BinaryLdapData.class
 * Java compiler version: 7 (51.0)
 * JD-Core Version:       0.7.1
 */